package com.danicsoft.daide.serverclient;

import com.danicsoft.daide.command.HelloCommand;

/**
 * Contains information about the current variant. For more information, see
 * <code>{@link HelloCommand}</code>
 * 
 * @author Daniel Yule (daniel.yule@gmail.com)
 * @version 1.0
 */
public interface VariantInfo {
	/**
	 * If true, then any legal syntax for an order will be accepted, even if it
	 * is illegal.
	 * 
	 * @return True if any order is accepted.
	 */
	public boolean isAnyOrdersAccepted() ;

	/**
	 * Gets the time limit in seconds that we have to submit orders on a build
	 * turn
	 * 
	 * @return The build turn time limit.
	 */
	public int getBuildTimeLimit() ;

	/**
	 * If true, the game will pause if one of the players disconnects.
	 * 
	 * @return True if deadlines stop on disconnect.
	 */
	public boolean isDeadlineDisconnect() ;

	/**
	 * Gets the time limit in seconds that we have to submit orders on a
	 * movement turn
	 * 
	 * @return The movement turn time limit.
	 */
	public int getMovementTimeLimit() ;

	/**
	 * Gets the time limit in seconds that we have to submit orders on a retreat
	 * turn
	 * 
	 * @return The retreat turn time limit.
	 */
	public int getRetreatTimeLimit() ;

	/**
	 * Gets the syntax level this game is operating at.
	 * 
	 * @return The syntax level for this game.
	 */
	public int getSyntaxLevel();
}
